home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / MATHS / RLAB / RLAB125.ZIP / !RLaB / toolbox / pinv < prev    next >
Text File  |  1994-09-20  |  697b  |  32 lines

  1. //-------------------------------------------------------------------//
  2. //
  3. //  Syntax:    pinv ( A )
  4. //        pinv ( A , tol )
  5.  
  6. //  Description:
  7.  
  8. //  The pinv function computes the pseudo-inverse of it's argument A. 
  9.  
  10. //  See Also: rank
  11.  
  12. //-------------------------------------------------------------------//
  13.  
  14. pinv = function(A, tol)
  15. {
  16.   // Pseudo-inverse, ignore singular values <= tol.
  17.   // Default tol = max(size(A)) * s(1) * eps.
  18.  
  19.   s = svd(A);
  20.   if(!exist (tol)) { tol = max(size(A)) * norm(A,"2") * epsilon(); }
  21.  
  22.   r = sum ((s.sigma > tol));
  23.   if(r == 0) 
  24.   { 
  25.     X = zeros (size (A')); 
  26.   else
  27.     S = diag (ones (r,1) ./ s.sigma[1:r]');
  28.     X = s.vt'[;1:r] * S * s.u[;1:r]';
  29.   }
  30.   return X;
  31. };
  32.